home *** CD-ROM | disk | FTP | other *** search
/ Aminet 23 / Aminet 23 (1998)(GTI - Schatztruhe)[!][Feb 1998].iso / Aminet / dev / misc / gms_dev.lha / GMSDev / Source / Asm / Blitter / RamboWorm.s < prev    next >
Text File  |  1997-12-16  |  6KB  |  274 lines

  1. ;-------T-------T------------------------T----------------------------------;
  2. ;Name:      RamboWorm Bob Demo
  3. ;Author:    Paul Manias
  4. ;Copyright: DreamWorld Productions (c) 1996-1997.  Freely distributable.
  5. ;
  6. ;This example blits a Worm from an IFF file onto a double buffered screen.
  7. ;The RESTORE mode is used to put the background back.
  8.  
  9.     INCDIR    "GMSDev:Includes/"
  10.     INCLUDE    "dpkernel/dpkernel.i"
  11.  
  12.     SECTION    "Demo",CODE
  13.  
  14. ;===========================================================================;
  15. ;                             INITIALISE DEMO
  16. ;===========================================================================;
  17.  
  18. Start:    STARTDPK
  19.  
  20.     MOVEM.L    A0-A6/D1-D7,-(SP)
  21.     move.l    DPKBase(pc),a6
  22.     lea    BackgroundFile(pc),a0
  23.     moveq    #ID_PICTURE,d0
  24.     CALL    Load
  25.     move.l    d0,PIC_Background
  26.     beq    .Exit
  27.  
  28.     ;Get screen.
  29.  
  30.     moveq    #ID_SCREEN,d0
  31.     CALL    Get
  32.     move.l    d0,Screen
  33.     beq    .Exit
  34.  
  35.     ;Copy picture details to screen.
  36.  
  37.     move.l    PIC_Background(pc),a0
  38.     move.l    PIC_Bitmap(a0),a2
  39.     move.l    Screen(pc),a1
  40.     move.l    #DBLBUFFER,GS_Attrib(a1)
  41.     move.l    BMP_Data(a2),GS_MemPtr1(a1)
  42.     CALL    CopyStructure
  43.  
  44.     ;Initialise the screen.
  45.  
  46.     move.l    Screen(pc),a0    ;Initialise the screen.
  47.     sub.l    a1,a1
  48.     CALL    Init
  49.     tst.l    d0
  50.     beq.s    .Exit
  51.  
  52.     move.l    BLTBase(pc),a6
  53.     move.l    Screen(pc),a0
  54.     moveq    #BUFFER1,d0
  55.     moveq    #BUFFER2,d1
  56.     CALL    bltCopyBuffer
  57.  
  58. ;---------------------------------------------------------------------------;
  59. ;Initialise the restore object.
  60.  
  61.     move.l    DPKBase(pc),a6
  62.     lea    RestoreTags(pc),a0
  63.     move.l    Screen(pc),a1    ;a1 = Screen.
  64.     CALL    Init    ;>> = Initialise the restore list.
  65.     tst.l    d0    ;d0 = Check for errors.
  66.     beq.s    .Exit    ;>> = Error, exit.
  67.  
  68. ;---------------------------------------------------------------------------;
  69. ;Load the bob file in.  This contains the graphics data that we are
  70. ;going to draw to the screen.
  71.  
  72.     lea    BBT_Rambo(pc),a0    ;a0 = Object.
  73.     move.l    Screen(pc),a1    ;a1 = Container.
  74.     CALL    Init    ;>> = Initialise bob to screen.
  75.     tst.l    d0
  76.     beq.s    .Exit
  77.  
  78. ;---------------------------------------------------------------------------;
  79. ;Load sounds and initialise joydata object.
  80.  
  81.     lea    SMT_Rambo(pc),a0
  82.     sub.l    a1,a1
  83.     CALL    Init
  84.     tst.l    d0
  85.     beq.s    .Exit
  86.  
  87.     moveq    #ID_JOYDATA,d0    ;Get joydata structure.
  88.     CALL    Get
  89.     move.l    d0,JoyData
  90.     beq.s    .Exit
  91.     move.l    d0,a0    ;Initialise the joydata structure.
  92.     sub.l    a1,a1
  93.     CALL    Init
  94.     tst.l    d0
  95.     beq.s    .Exit
  96.  
  97. ;---------------------------------------------------------------------------;
  98. ;Display our screen and start the demo.
  99.  
  100.     move.l    Screen(pc),a0
  101.     CALL    Display
  102.  
  103.     bsr.s    Main
  104.  
  105. ;---------------------------------------------------------------------------;
  106. ;Free the allocations.
  107.  
  108. .Exit    move.l    DPKBase(pc),a6
  109.     move.l    JoyData(pc),a0
  110.     CALL    Free
  111.     move.l    SND_Rambo(pc),a0
  112.     CALL    Free
  113.     move.l    BOB_Rambo(pc),a0
  114.     CALL    Free
  115.     move.l    Restore(pc),a0
  116.     CALL    Free
  117.     move.l    PIC_Background(pc),a0
  118.     CALL    Free
  119.     move.l    Screen(pc),a0
  120.     CALL    Free
  121.     MOVEM.L    (SP)+,A0-A6/D1-D7
  122.     moveq    #ERR_OK,d0
  123.     rts
  124.  
  125. ;===========================================================================;
  126. ;                                MAIN LOOP
  127. ;===========================================================================;
  128.  
  129. SPEED      =    5
  130. FIRESPEED =    0
  131.  
  132. Main:    moveq    #$00,d7
  133.  
  134. .Loop    move.l    DPKBase(pc),a6    ;a6 = DPKBase
  135.     move.l    Restore(pc),a0    ;a0 = Restore object.
  136.     CALL    Activate    ;>> = Restore the backgrounds.
  137.  
  138.     move.l    BOB_Rambo(pc),a0    ;a0 = Bob.
  139.     CALL    Draw    ;>> = Blit the bob.
  140.  
  141.     move.l    SCRBase(pc),a6    ;a6 = SCRBase.
  142.     CALL    scrWaitAVBL    ;>> = Wait for vertical blank.
  143.     move.l    Screen(pc),a0    ;a0 = Screen
  144.     CALL    scrSwapBuffers    ;>> = Swap video memory buffers.
  145.  
  146.     addq.w    #1,d7
  147.  
  148.     move.l    DPKBase(pc),a6
  149.     move.l    BOB_Rambo(pc),a1
  150.     tst.b    FireState
  151.     bne.s    .FireOn
  152.  
  153.     cmp.w    #SPEED,d7
  154.     ble.s    .Move
  155.     moveq    #$00,d7
  156.     addq.w    #1,BOB_Frame(a1)
  157.     cmp.w    #9,BOB_Frame(a1)
  158.     blt.s    .Move
  159.     clr.w    BOB_Frame(a1)
  160.     bra.s    .Move
  161.  
  162. .FireOn    cmp.w    #FIRESPEED,d7
  163.     ble.s    .Move
  164.     moveq    #$00,d7
  165.     cmp.w    #10,BOB_Frame(a1)
  166.     bge.s    .On
  167.     move.w    #9,BOB_Frame(a1)
  168.  
  169. .On    addq.w    #1,BOB_Frame(a1)
  170.     cmp.w    #13,BOB_Frame(a1)
  171.     blt.s    .Move
  172.     clr.w    BOB_Frame(a1)
  173.     clr.b    FireState
  174.     move.l    SND_Rambo(pc),a0
  175.     CALL    Activate
  176.  
  177. .Move    move.l    JoyData(pc),a0
  178.     CALL    Query
  179.     move.l    JoyData(pc),a0
  180.     move.l    BOB_Rambo(pc),a1
  181.     move.w    JD_XChange(a0),d0
  182.     add.w    d0,BOB_XCoord(a1)
  183.     move.w    JD_YChange(a0),d0
  184.     add.w    d0,BOB_YCoord(a1)
  185.     move.l    JD_Buttons(a0),d0
  186.     btst    #JB_LMB,d0
  187.     beq.s    .chkRMB
  188.     st    FireState    ;Set fire to on.
  189.  
  190. .chkRMB    btst    #JB_RMB,d0
  191.     beq    .Loop
  192.     rts
  193.  
  194. FireState:
  195.     dc.b    0
  196.     even
  197.  
  198. ;===========================================================================;
  199. ;                                  DATA
  200. ;===========================================================================;
  201.  
  202. JoyData:    dc.l  0
  203. Screen:        dc.l  0
  204. PIC_Background:    dc.l  0
  205. BackgroundFile:    FILENAME "GMS:demos/data/PIC.Green"
  206.  
  207. ;---------------------------------------------------------------------------;
  208.  
  209. RestoreTags:    dc.l  TAGS_RESTORE
  210. Restore:    dc.l  0
  211.         dc.l  RSA_Entries,1
  212.         dc.l  TAGEND
  213.  
  214. ;---------------------------------------------------------------------------;
  215.  
  216. BBT_Rambo:    dc.l  TAGS_BOB
  217. BOB_Rambo:    dc.l  0
  218.         dc.l  BBA_GfxCoords,.frames
  219.         dc.l  BBA_Width,32
  220.         dc.l  BBA_Height,24
  221.         dc.l  BBA_XCoord,150
  222.         dc.l  BBA_YCoord,150
  223.         dc.l  BBA_ClipLX,32
  224.         dc.l  BBA_ClipRX,320-32
  225.         dc.l  BBA_ClipTY,32
  226.         dc.l  BBA_ClipBY,256-32
  227.         dc.l  BBA_Attrib,BBF_RESTORE|BBF_CLIP|BBF_GENMASKS
  228.         dc.l    BBA_SourceTags,ID_PICTURE
  229.         dc.l    PCA_Source,.file
  230.         dc.l      PCA_BitmapTags,0
  231.         dc.l      BMA_MemType,MEM_BLIT
  232.         dc.l      TAGEND,0
  233.         dc.l    TAGEND,0
  234.         dc.l  TAGEND
  235.  
  236. .frames        dc.w    0,00   ;0 GraphicX / GraphicY
  237.         dc.w   32,00   ;1 ...
  238.         dc.w   64,00   ;2
  239.         dc.w   96,00   ;3
  240.         dc.w  128,00   ;4
  241.         dc.w  160,00   ;5
  242.         dc.w  192,00   ;6
  243.         dc.w  224,00   ;7
  244.         dc.w  256,00   ;8
  245.         dc.w  288,00   ;9
  246.         dc.w    0,48   ;10
  247.         dc.w   32,48   ;11
  248.         dc.w   64,48   ;12
  249.         dc.l  -1
  250.  
  251. .file        FILENAME "GMS:demos/data/PIC.Rambo"
  252.  
  253. ;---------------------------------------------------------------------------;
  254.  
  255. SMT_Rambo:    dc.l  TAGS_SOUND
  256. SND_Rambo:    dc.l  0
  257.         dc.l  SA_Octave,OCT_C2S
  258.         dc.l  SA_Volume,100
  259.         dc.l  SA_Source,.file
  260.         dc.l  SA_Attrib,SSTOPLAST
  261.         dc.l  TAGEND
  262.  
  263. .file        FILENAME "GMS:demos/data/SND.Rambo"
  264.  
  265. ;===========================================================================;
  266.  
  267. ProgName:    dc.b  "Rambo Worm",0
  268. ProgAuthor:    dc.b  "Paul Manias",0
  269. ProgDate:    dc.b  "14 December 1997",0
  270. ProgCopyright:    dc.b  "DreamWorld Productions (c) 1996-1997.  Freely distributable.",0
  271. ProgShort:    dc.b  "Bob demo.",0
  272.         even
  273.  
  274.